package com.bootdo.common.utils;

import java.lang.reflect.Field;

/**
 * @description: 利用反射的一些实用方法
 * @author: hejinen
 * @date: 2019/1/12
 */
public class RejectUtil {
    /**
     * 将object中的所有为null的属性修改为空字符串或0
     * @author: hejinen
     * @date:2016年10月22日 下午4:39:38
     */
    public static void nullToEmptyStrOr0(Object object) throws IllegalArgumentException, IllegalAccessException{
        if(object == null)
            return;
        Field[] fields = object.getClass().getDeclaredFields();
        if(fields == null || fields.length == 0)
            return;
        for(Field field:fields){
            field.setAccessible(true);
            Object value = field.get(object);
            Class<?> fieldType = field.getType();
            if(value == null){
                if(String.class.isAssignableFrom(fieldType)){
                    field.set(object,"");
                }else if(Integer.class.isAssignableFrom(fieldType)){
                    field.set(object,0);
                }else if(Long.class.isAssignableFrom(fieldType)){
                    field.set(object,0L);
                }else if(Double.class.isAssignableFrom(fieldType)){
                    field.set(object,0D);
                }else if(Float.class.isAssignableFrom(fieldType)){
                    field.set(object,0F);
                }else if(Boolean.class.isAssignableFrom(fieldType)){
                    field.set(object,false);
                }
            }
        }
    }
}
